3-1 禰貌G繪洢O

MATLAB 的 plot 指令是最基本的繪圖指令,可以對於一組 x 座標及相對應的 y 座標進行描點作圖,例如:

Example 1: 03-二維平面繪圖/plotxy01.mx = linspace(0, 2*pi); % 在 0 到 2*pi 間,等分取 100 個點 y = sin(x); % 計算 x 的正弦函數值 plot(x, y); % 進行二維平面描點作圖

在上例中,linspace(0, 2*pi) 產生從 0 到 2π 且長度為 100 (預設值)的向量 x,y 則是對應的 y 座標值,plot(x, y) 則可對這 100 個二維平面上的點進行描點作圖。

如果只給定一個向量,那麼 plot 指令會將此向量對其索引值(Index)作圖。因此,若 y 為一向量,則 plot(y) 和 plot(1:length(y), y) 會得到相同的結果。

若要利用 plot 指令一次畫出多條曲線,可將 x 及 y 座標依次送入 plot 指令即可,例如:

Example 2: 03-二維平面繪圖/plotxy02.mx = linspace(0, 2*pi); % 在 0 到 2*pi 間,等分取 100 個點 plot(x, sin(x), x, cos(x), x, sin(x)+cos(x)); % 進行多條曲線描點作圖

MATLAB 在畫出多條曲線時,會自動輪換曲線顏色,以利分辨。(亦可由使用者自行指定曲線顏色及其他相關性質,詳見下一節。)若要以不同的線標(Marker)來作圖,可輸入如下:

Example 3: 03-二維平面繪圖/plotxy03.mx = linspace(0, 2*pi); % 在 0 到 2π 間,等分取 100 個點 plot(x, sin(x), 'o', x, cos(x), 'x', x, sin(x)+cos(x), '*');

如果只給定一個矩陣 y,plot 指令可對矩陣 y 的每一個行向量(Column Vector)作圖,例如:

Example 4: 03-二維平面繪圖/plotxy04.my = peaks; % 產生一個 49×49 的矩陣 plot(y); % 對矩陣 y 的每一個行向量作圖

其中 peaks 指令可以產生一個 49×49 的矩陣,代表一個二維函數的值。(如果您直接在 MATLAB 指令視窗鍵入 peaks,就可以看見這個函數的方程式及曲面。)因此 plot(y) 就直接畫出這 49 條直線,其效果類似於從側面觀看 peaks 函數。

如果 x 和 y 都是矩陣,那麼 plot(x, y) 將會取用 y 的每一個行向量和對應的 x 行向量作圖,例如:

Example 5: 03-二維平面繪圖/plotxy05.mx = peaks; y = x'; % 求矩陣 x 的轉置矩陣 x' plot(x, y); % 取用矩陣 x 的每一行向量,與對應矩陣 y 的每一個行向量作圖

Hint
一般情況下,MATLAB 將矩陣視為行向量的集合。因此對於一個只能處理向量的函數(例如:max、min 及 mean等),若給定一個矩陣,則此函數會對矩陣的行向量一一進行處理或運算。

如果 z 是一個複數向量或矩陣,那麼 plot(z) 是將 z 的實部(即 real(z))和虛部(即 imag(z))分別當成 x 座標和 y 座標來作圖,其效果是相同於 plot(real(z), imag(z)),舉例如下:

Example 6: 03-二維平面繪圖/plotxy06.mx = randn(30); % 產生 30×30 的亂數(正規分佈)矩陣 z = eig(x); % 計算 x 的「固有值」(或稱「特徵值」) plot(z, 'o') grid on % 畫出格線

在上例中,x 是一個 30×30 的亂數矩陣,z 則是 x 的「固有值」(Eigenvalue,或稱「特徵值」)。由於 z 是一複數向量,而且每一個複數都和其共軛複數同時出現,因此所畫出的圖是上下對稱的。

相關的 MATLAB 基本二維繪圖指令,可整理如下表。

指令說明
Plotx 軸和 y 軸均為線性刻度(Linear Scale)
loglogx 軸和 y 軸均為對數刻度(Logarithmic Scale)
semilogxx 軸為對數刻度,y 軸為線性刻度
semilogyx 軸為線性刻度,y 軸為對數刻度
plotyy畫出兩個刻度不同的y軸

例如,若要使 x 軸為對數刻度,來對正弦函數作圖,可進行如下:

Example 7: 03-二維平面繪圖/plotxy07.mx = linspace(0, 8*pi); % 在 0 到 8π 間,等分取 100 個點 semilogx(x, sin(x)); % 使 x 軸為對數刻度,並對其正弦函數作圖

此外,plotyy 指令可以畫出兩個刻度不同的 y 軸,如下:

Example 8: 03-二維平面繪圖/plotxy08.mx = linspace(0, 2*pi); % 在 0 到 2π 間,等分取 100 個點 y1 = sin(x); y2 = exp(-x); plotyy(x, y1, x, y2); % 畫出兩個刻度不同的 y 軸,分別是 y1, y2

請注意在上圖中,y1 的刻度是在左手邊,y2 的刻度是在右手邊,而且兩邊的刻度是不一樣的。


MATLAB程式設計:入門篇